// const EventsEmit = require('events')
const EventsEmit = require('./myEvents')
const util = require('util')


/**
 * girl 继承EventsEmit时  this并没有_events属性 内部需要判空
 * 三种继承 或第三方依赖
 * 
*/
function Girl() {
    EventsEmit.call(this) // 将eventEmit上的this指向 被继承的子类
}

// Object.setPrototypeOf(Girl.prototype, EventsEmit.prototype)   es6
// Girl.prototype = Object.create(EventsEmit.prototype)  es5
// Girl.prototype.__proto__ = EventsEmit.prototype
util.inherits(Girl, EventsEmit)




let event = new Girl;
//  on 订阅  emit发布  once执行一次   off关闭订阅  

// process.nextTick(() => { // 异步执行
//     event.emit('女孩失恋了', 'boy')
// })
let eat = function (name) {
    console.log('关闭吃', name)
}

event.on('女孩失恋了', function (name) {
    console.log('哭', name)
})


event.on('女孩失恋了', eat)


event.on('女孩失恋了', function (name) {
    console.log('逛街', name)
})

const onceCb = (name) => {
    console.log('执行一次', name)
}
event.once('女孩失恋了', onceCb)

event.off('女孩失恋了', onceCb)

event.emit('女孩失恋了', 'boy')

event.off('女孩失恋了', eat)
event.emit('女孩失恋了', 'boy')